package com.qf.openapi.web.master.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qf.openapi.web.master.dao.ApiSystemParameterDao;
import com.qf.openapi.web.master.entity.ApiSystemParameter;
import com.qf.openapi.web.master.service.ApiSystemParameterService;
import com.qf.openapi.web.master.utils.Constants;
import com.qf.openapi.web.master.vo.ApiSystemParameterVo;
import com.qf.openapi.web.master.vo.PageVo;
import com.qf.openapi.web.master.vo.ResultVo;
import com.qf.openapi.web.master.vo.TableVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Slf4j
public class ApiSystemParameterServiceImpl implements ApiSystemParameterService {
    @Autowired
    ApiSystemParameterDao apiSystemParameterDao;

    //分页查询
    @Transactional(propagation = Propagation.SUPPORTS)
    @Override
    public TableVo<ApiSystemParameter> getApiSystemParametersByCondition(PageVo pageVo, ApiSystemParameterVo apiSystemParameterVo) {
        PageHelper.startPage(pageVo.getPage(),pageVo.getLimit());
        final List<ApiSystemParameter> apiSystemParameters = apiSystemParameterDao.getApiSystemParameterByPage(apiSystemParameterVo);
        PageInfo<ApiSystemParameter> PageInfo = new PageInfo<>(apiSystemParameters);
        log.debug("查询分页数据{}",PageInfo);
        return TableVo.ok(PageInfo);
    }

    //增加
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResultVo addApiSystemParameter(ApiSystemParameter apiSystemParameter) {
        apiSystemParameterDao.insertApiSystemParameter(apiSystemParameter);
        return ResultVo.ok();
    }

    //删除
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResultVo del(String[] ids) {
        ResultVo resultVo = null;
        if(ids.length>0){
            apiSystemParameterDao.delApiSystemParameterById(ids);
            resultVo = ResultVo.ok();
        }else {
            resultVo = ResultVo.failWithErrorMsg(Constants.USER_IDS_LENGHT_ERROR_MSG);
        }
        return resultVo;
    }

    //编辑
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResultVo updateApiSystemParameter(ApiSystemParameter apiSystemParameter) {
        ResultVo resultVo = null;
        //非空判断
        final Integer id = apiSystemParameter.getId();
        if (id==null){
            resultVo = ResultVo.fail();
        }else {
            apiSystemParameterDao.updateApiSystemParameter(apiSystemParameter);
        }
        return resultVo;
    }
}
